package it.crosato.stage.server.model.comparison;

import it.crosato.stage.shared.objects.MultisetsGroup;
import it.crosato.stage.shared.objects.Pathway;

public interface IInvariantsModeller {

	/**
	 * Costruisce i gruppi di T-invarianti minimali, descritti mediante dei
	 * multi-insiemi, che rappresentano le vie metaboliche
	 * @param pathways le vie metaboliche da modellare
	 * @param enzymes indica se considerare gli enzimi al posto delle reazioni
	 * @param sid id della sessione. Serve per riconoscere i files di 4ti2 relativi
	 * ad uno specifico utente
	 * @param path percorso dell'applicazione. Serve per salvare i file di 4ti2 all'
	 * interno dell'applicazione
	 * @return l'insieme dei gruppi di T-invarianti minimali, sotto forma id multi-insiemi
	 * di reazioni o di enzimi che le catalizzano, che rappresentano le vie metaboliche
	 */
	public abstract MultisetsGroup[][] getPathwaysModels(Pathway[][] pathways,
			boolean enzymes, String sid, String path);

}